Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add new benchmark for FutureGroup #179

Merged
merged 3 commits into from
Jun 9, 2024

Conversation

soooch
Copy link
Contributor

@soooch soooch commented Apr 16, 2024

This benchmark aims to measure latency between futures becoming ready and the stream producing them.
The bench currently shows FutureGroup trailing significantly behind FuturesUnordered for larger test sizes.

~/c/futures-concurrency (new-future-group-bench)> cargo bench future_group_poll_latency
    Finished bench [optimized + debuginfo] target(s) in 0.05s
     Running benches/bench.rs (target/release/deps/bench-26d01e1345f7786c)
Gnuplot not found, using plotters backend
future_group_poll_latency/FutureGroup/Params { init_size: 10, pct_ready_per_round: 0.001 }                                                                             
                        time:   [630.81 ns 631.56 ns 632.24 ns]
                        change: [+7.1846% +7.2671% +7.3558%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 7 outliers among 100 measurements (7.00%)
  7 (7.00%) high mild
future_group_poll_latency/FuturesUnordered/Params { init_size: 10, pct_ready_per_round: 0.001 }                                                                             
                        time:   [466.72 ns 469.05 ns 471.58 ns]
                        change: [-1.7131% -1.2735% -0.8808%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 17 outliers among 100 measurements (17.00%)
  14 (14.00%) low severe
  3 (3.00%) low mild
future_group_poll_latency/FutureGroup/Params { init_size: 10, pct_ready_per_round: 0.2 }                                                                             
                        time:   [537.25 ns 539.50 ns 541.62 ns]
                        change: [+2.5562% +2.9383% +3.2572%] (p = 0.00 < 0.05)
                        Performance has regressed.
future_group_poll_latency/FuturesUnordered/Params { init_size: 10, pct_ready_per_round: 0.2 }                                                                             
                        time:   [366.65 ns 368.35 ns 369.97 ns]
                        change: [-2.7245% -2.4190% -2.0874%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 30 outliers among 100 measurements (30.00%)
  16 (16.00%) low severe
  4 (4.00%) low mild
  8 (8.00%) high mild
  2 (2.00%) high severe
future_group_poll_latency/FutureGroup/Params { init_size: 10, pct_ready_per_round: 1.0 }                                                                             
                        time:   [404.96 ns 410.50 ns 416.19 ns]
                        change: [+13.031% +13.890% +14.650%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 17 outliers among 100 measurements (17.00%)
  16 (16.00%) low severe
  1 (1.00%) low mild
future_group_poll_latency/FuturesUnordered/Params { init_size: 10, pct_ready_per_round: 1.0 }                                                                             
                        time:   [276.28 ns 276.34 ns 276.39 ns]
                        change: [-0.7471% -0.7059% -0.6578%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 13 outliers among 100 measurements (13.00%)
  7 (7.00%) low mild
  4 (4.00%) high mild
  2 (2.00%) high severe
future_group_poll_latency/FutureGroup/Params { init_size: 100, pct_ready_per_round: 0.001 }                                                                             
                        time:   [14.159 µs 14.207 µs 14.255 µs]
                        change: [+4.3452% +4.4973% +4.6408%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 18 outliers among 100 measurements (18.00%)
  8 (8.00%) low severe
  7 (7.00%) low mild
  1 (1.00%) high mild
  2 (2.00%) high severe
future_group_poll_latency/FuturesUnordered/Params { init_size: 100, pct_ready_per_round: 0.001 }                                                                             
                        time:   [4.9547 µs 4.9589 µs 4.9646 µs]
                        change: [-1.6303% -1.2868% -0.9175%] (p = 0.00 < 0.05)
                        Change within noise threshold.
future_group_poll_latency/FutureGroup/Params { init_size: 100, pct_ready_per_round: 0.2 }                                                                             
                        time:   [11.181 µs 11.182 µs 11.184 µs]
                        change: [+2.6277% +2.6520% +2.6760%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 7 outliers among 100 measurements (7.00%)
  1 (1.00%) low mild
  6 (6.00%) high mild
future_group_poll_latency/FuturesUnordered/Params { init_size: 100, pct_ready_per_round: 0.2 }                                                                             
                        time:   [2.9196 µs 2.9202 µs 2.9207 µs]
                        change: [-1.6521% -1.6239% -1.5951%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) low mild
  1 (1.00%) high mild
future_group_poll_latency/FutureGroup/Params { init_size: 100, pct_ready_per_round: 1.0 }                                                                             
                        time:   [4.0768 µs 4.0777 µs 4.0787 µs]
                        change: [-0.3427% +0.0016% +0.2321%] (p = 1.00 > 0.05)
                        No change in performance detected.
Found 5 outliers among 100 measurements (5.00%)
  1 (1.00%) low severe
  1 (1.00%) low mild
  3 (3.00%) high mild
future_group_poll_latency/FuturesUnordered/Params { init_size: 100, pct_ready_per_round: 1.0 }                                                                             
                        time:   [2.7793 µs 2.7796 µs 2.7801 µs]
                        change: [-6.4224% -6.2342% -6.0593%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 9 outliers among 100 measurements (9.00%)
  1 (1.00%) low severe
  8 (8.00%) high severe
Benchmarking future_group_poll_latency/FutureGroup/Params { init_size: 1000, pct_ready_per_round: 0.001 }: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 6.4s, enable flat sampling, or reduce sample count to 60.
future_group_poll_latency/FutureGroup/Params { init_size: 1000, pct_ready_per_round: 0.001 }                                                                             
                        time:   [1.0431 ms 1.0460 ms 1.0488 ms]
                        change: [-0.7482% -0.5783% -0.3925%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 20 outliers among 100 measurements (20.00%)
  1 (1.00%) high mild
  19 (19.00%) high severe
future_group_poll_latency/FuturesUnordered/Params { init_size: 1000, pct_ready_per_round: 0.001 }                                                                            
                        time:   [52.312 µs 52.334 µs 52.362 µs]
                        change: [-0.0070% +0.0275% +0.0639%] (p = 0.14 > 0.05)
                        No change in performance detected.
Found 7 outliers among 100 measurements (7.00%)
  1 (1.00%) low severe
  3 (3.00%) low mild
  1 (1.00%) high mild
  2 (2.00%) high severe
future_group_poll_latency/FutureGroup/Params { init_size: 1000, pct_ready_per_round: 0.2 }                                                                            
                        time:   [826.35 µs 828.36 µs 830.13 µs]
                        change: [+1.3397% +1.7624% +2.2118%] (p = 0.00 < 0.05)
                        Performance has regressed.
future_group_poll_latency/FuturesUnordered/Params { init_size: 1000, pct_ready_per_round: 0.2 }                                                                            
                        time:   [30.896 µs 31.006 µs 31.109 µs]
                        change: [-1.8062% -1.4034% -1.0374%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
future_group_poll_latency/FutureGroup/Params { init_size: 1000, pct_ready_per_round: 1.0 }                                                                            
                        time:   [44.534 µs 44.610 µs 44.675 µs]
                        change: [+2.2008% +2.3854% +2.5792%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 25 outliers among 100 measurements (25.00%)
  4 (4.00%) low severe
  21 (21.00%) high severe
future_group_poll_latency/FuturesUnordered/Params { init_size: 1000, pct_ready_per_round: 1.0 }                                                                            
                        time:   [31.036 µs 31.122 µs 31.203 µs]
                        change: [-0.0946% +0.2297% +0.6345%] (p = 0.26 > 0.05)
                        No change in performance detected.
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe

     Running benches/compare.rs (target/release/deps/compare-430c491dda6e2002)
Gnuplot not found, using plotters backend```

benches/bench.rs Outdated Show resolved Hide resolved
Copy link
Owner

@yoshuawuyts yoshuawuyts left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks so much for submitting this! - Despite not doing the best in these benchmarks yet, I think they're valuable because they allow us to learn where we have an opportunity to improve.

In principle I'm keen to land these; I mainly just have some concerns about the relatively high amount of outliers at the higher counts. If we can resolve that, I think we should be good!

Thank you!

benches/bench.rs Outdated
Comment on lines 151 to 205
while !senders.is_empty() {
let completion_limit = max_ready_num_per_poll.min(senders.len());
let num_completing = rng.gen_range(0..=completion_limit);

assert_eq!(senders.drain(..num_completing).count(), num_completing);

let recv_start = Instant::now();
assert_eq!(
(&mut group).take(num_completing).count().await,
num_completing
);
total_runtime += recv_start.elapsed();
}
}

total_runtime
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It took me a second to read how this works; it would be really helpful if you can annotate how the latency is being counted here.

From what I can tell, what we're doing is taking N rounds to complete all futures in the group. We count how long it took to complete each round, and add that to a total duration. The way we mark futures as complete is by inserting one-shot channels into the futures group.

Did I get that right?

Copy link
Contributor Author

@soooch soooch Apr 16, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We initialize the FutureGroup with size futures. Our futures are the Receiver ends of oneshots. When the Sender ends are dropped, the corresponding Receiver futures become ready.

I think that last part may be what you're missing? When we drain the senders vec at line 155 we are waking up Receivers in the FutureGroup.

Insertion to the FutureGroup happens once up front and is not used for signaling.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will get some more comments in there.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yoshuawuyts let me know if the new docs make this more clear

benches/bench.rs Show resolved Hide resolved
benches/bench.rs Outdated Show resolved Hide resolved
@yoshuawuyts
Copy link
Owner

@soooch By the way, I'd also be interested if you have any theories as to what might be causing this difference in latency? I know for example that in #137 we started dropping futures before we return their values, as a matter of correctness. I don't know whether FuturesUnordered does the same thing; but if they don't I could see that having a measurable impact on latency between futures completing and values being returned.

@soooch Also another question: it seems right now the test is hard-coded to taking 10 rounds. Have you noticed any differences if you increase or decrease the number of rounds?

@soooch
Copy link
Contributor Author

soooch commented Apr 16, 2024

my primary theory is that for each poll, all futures are iterated over regardless of whether they have been woken or not. iirc FuturesUnordered does some more complicated stuff there so it only iterates on woken futures. i think i saw an old PR on this repo that was trying to do something similar.

i did try out a few other numbers. FutureGroup was always significantly slower than FuturesUnordered, but I think the difference may have been less for higher ratios.

(i thought about parameterizing the benches over both size and "wake_limit", but the benches probably already take too long to run).

@yoshuawuyts
Copy link
Owner

my primary theory is that for each poll, all futures are iterated over regardless of whether they have been woken or not. iirc FuturesUnordered does some more complicated stuff there so it only iterates on woken futures. i think i saw an old PR on this repo that was trying to do something similar.

Hmmm, thank you for your answer - though that shouldn't be the case. We're being quite careful to only iterate over futures which are currently ready to be woken. We do iterate over all active keys, but that just walks a BTreeSet, which should be fairly cheap?:

for index in this.keys.iter().cloned() {
if states[index].is_pending() && readiness.clear_ready(index) {

I'm quite surprised about the differences measured here; especially since on the existing benchmark we also measure time elapsed and the differences are effectively negligable. I'm hoping that by better understanding the way this benchmark is structured we can drill down further into why it performs differently for both APIs.

@soooch
Copy link
Contributor Author

soooch commented Apr 17, 2024

my primary theory is that for each poll, all futures are iterated over regardless of whether they have been woken or not. iirc FuturesUnordered does some more complicated stuff there so it only iterates on woken futures. i think i saw an old PR on this repo that was trying to do something similar.

Hmmm, thank you for your answer - though that shouldn't be the case. We're being quite careful to only iterate over futures which are currently ready to be woken. We do iterate over all active keys, but that just walks a BTreeSet, which should be fairly cheap?:

for index in this.keys.iter().cloned() {
if states[index].is_pending() && readiness.clear_ready(index) {

I'm quite surprised about the differences measured here; especially since on the existing benchmark we also measure time elapsed and the differences are effectively negligable. I'm hoping that by better understanding the way this benchmark is structured we can drill down further into why it performs differently for both APIs.

Theis_pending and clear_ready are probably about as expensive as the btree iteration. they’re not expensive in an absolute sense. But if they're done for 1000 items when only a single item has woken up that should start to add up, right?

Take a look at the ready_to_run_queue in FuturesUnordered

@soooch soooch requested a review from yoshuawuyts April 17, 2024 23:21
@soooch
Copy link
Contributor Author

soooch commented Apr 18, 2024

my primary theory is that for each poll, all futures are iterated over regardless of whether they have been woken or not. iirc FuturesUnordered does some more complicated stuff there so it only iterates on woken futures. i think i saw an old PR on this repo that was trying to do something similar.

Hmmm, thank you for your answer - though that shouldn't be the case. We're being quite careful to only iterate over futures which are currently ready to be woken. We do iterate over all active keys, but that just walks a BTreeSet, which should be fairly cheap?:

for index in this.keys.iter().cloned() {
if states[index].is_pending() && readiness.clear_ready(index) {

I'm quite surprised about the differences measured here; especially since on the existing benchmark we also measure time elapsed and the differences are effectively negligable. I'm hoping that by better understanding the way this benchmark is structured we can drill down further into why it performs differently for both APIs.

Theis_pending and clear_ready are probably about as expensive as the btree iteration. they’re not expensive in an absolute sense. But if they're done for 1000 items when only a single item has woken up that should start to add up, right?

Take a look at the ready_to_run_queue in FuturesUnordered

I think I've confirmed this theory to myself. This change brings FutureGroup to parity with FuturesUnordered for this benchmark. (and also improves numbers in the throughput bench by 10-20%).

This should still be more algorithmically complex than FuturesUnordered, but iter_ones on BitSlice is sufficiently well optimized that we're a bit faster than FuturesUnordered until the test size gets to around 10000 futures. Not sure how this holds as the BitSlice gets more "fragmented" (if that happens at all (I haven't looked into how BitVec does stuff)).

This performance could definitely be be achieved without depending on bitvec. This is more of a proof of concept.

@soooch soooch force-pushed the new-future-group-bench branch 3 times, most recently from ec9e058 to 501689c Compare April 18, 2024 02:15
benches/bench.rs Outdated Show resolved Hide resolved
benches/bench.rs Outdated Show resolved Hide resolved
soooch added 2 commits April 22, 2024 19:09
reimplement `FutureGroup::from_iter` in terms of `extend`
Removes restriction that `F: Default`
@soooch soooch force-pushed the new-future-group-bench branch from 43d6812 to fa7c029 Compare April 23, 2024 02:09
this benchmark aims to measure latency between futures
becoming ready and the stream producing them.
@soooch soooch force-pushed the new-future-group-bench branch from fa7c029 to d960f75 Compare April 23, 2024 02:10
@soooch
Copy link
Contributor Author

soooch commented Apr 23, 2024

Thanks so much for submitting this! - Despite not doing the best in these benchmarks yet, I think they're valuable because they allow us to learn where we have an opportunity to improve.

In principle I'm keen to land these; I mainly just have some concerns about the relatively high amount of outliers at the higher counts. If we can resolve that, I think we should be good!

Thank you!

So it appears that on my machine, I have a significant number of outliers for nearly every bench included in this crate. This new benchmark is about on par with the rest. If you have a more steady bench machine, would you be able to check that this bench is reasonably stable there?

@soooch
Copy link
Contributor Author

soooch commented May 15, 2024

@yoshuawuyts this may have fallen through the cracks. I believe I've addressed your initial concerns.

Copy link
Owner

@yoshuawuyts yoshuawuyts left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops - it indeed did. Thanks again!

@yoshuawuyts yoshuawuyts merged commit a0b4003 into yoshuawuyts:main Jun 9, 2024
7 checks passed
jakubadamw referenced this pull request in grafbase/grafbase Jun 17, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type |
Update |
|---|---|---|---|---|---|---|---|
| [@apollo/client](https://www.apollographql.com/docs/react/)
([source](https://togithub.com/apollographql/apollo-client)) | [`3.10.4`
->
`3.10.5`](https://renovatebot.com/diffs/npm/@apollo%2fclient/3.10.4/3.10.5)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@apollo%2fclient/3.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@apollo%2fclient/3.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@apollo%2fclient/3.10.4/3.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@apollo%2fclient/3.10.4/3.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
|
[@types/bun](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/bun)
([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/bun))
| [`1.1.3` ->
`1.1.4`](https://renovatebot.com/diffs/npm/@types%2fbun/1.1.3/1.1.4) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fbun/1.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fbun/1.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fbun/1.1.3/1.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fbun/1.1.3/1.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [async-compression](https://togithub.com/Nullus157/async-compression)
| `0.4.10` -> `0.4.11` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/async-compression/0.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-compression/0.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-compression/0.4.10/0.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-compression/0.4.10/0.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [async-graphql](https://togithub.com/async-graphql/async-graphql) |
`7.0.5` -> `7.0.6` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/async-graphql/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-graphql/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-graphql/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-graphql/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | patch |
| [async-graphql-axum](https://togithub.com/async-graphql/async-graphql)
| `7.0.5` -> `7.0.6` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/async-graphql-axum/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-graphql-axum/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-graphql-axum/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-graphql-axum/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | patch |
|
[async-graphql-parser](https://togithub.com/async-graphql/async-graphql)
| `7.0.5` -> `7.0.6` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/async-graphql-parser/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-graphql-parser/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-graphql-parser/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-graphql-parser/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | patch |
|
[async-graphql-value](https://togithub.com/async-graphql/async-graphql)
| `7.0.5` -> `7.0.6` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/async-graphql-value/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-graphql-value/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-graphql-value/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-graphql-value/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | patch |
| [async-lock](https://togithub.com/smol-rs/async-lock) | `3.3.0` ->
`3.4.0` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/async-lock/3.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-lock/3.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-lock/3.3.0/3.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-lock/3.3.0/3.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [async-tungstenite](https://togithub.com/sdroege/async-tungstenite) |
`0.26.0` -> `0.26.1` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/async-tungstenite/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-tungstenite/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-tungstenite/0.26.0/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-tungstenite/0.26.0/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [async-tungstenite](https://togithub.com/sdroege/async-tungstenite) |
`0.26.0` -> `0.26.1` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/async-tungstenite/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-tungstenite/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-tungstenite/0.26.0/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-tungstenite/0.26.0/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dev-dependencies | patch |
| [backtrace](https://togithub.com/rust-lang/backtrace-rs) | `0.3.71` ->
`0.3.73` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/backtrace/0.3.73?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/backtrace/0.3.73?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/backtrace/0.3.71/0.3.73?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/backtrace/0.3.71/0.3.73?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [bun](https://bun.sh) ([source](https://togithub.com/oven-sh/bun)) |
[`1.1.12` ->
`1.1.13`](https://renovatebot.com/diffs/npm/bun/1.1.12/1.1.13) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/bun/1.1.13?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/bun/1.1.13?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/bun/1.1.12/1.1.13?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/bun/1.1.12/1.1.13?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [clap](https://togithub.com/clap-rs/clap) | `4.5.4` -> `4.5.7` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/clap/4.5.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/clap/4.5.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/clap/4.5.4/4.5.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/clap/4.5.4/4.5.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [clap_complete](https://togithub.com/clap-rs/clap) | `4.5.2` ->
`4.5.5` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/clap_complete/4.5.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/clap_complete/4.5.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/clap_complete/4.5.2/4.5.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/clap_complete/4.5.2/4.5.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [cynic](https://cynic-rs.dev)
([source](https://togithub.com/obmarg/cynic)) | `3.7.2` -> `3.7.3` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/cynic/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/cynic/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/cynic/3.7.2/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/cynic/3.7.2/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | patch |
| [cynic-codegen](https://cynic-rs.dev)
([source](https://togithub.com/obmarg/cynic)) | `3.7.2` -> `3.7.3` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/cynic-codegen/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/cynic-codegen/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/cynic-codegen/3.7.2/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/cynic-codegen/3.7.2/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| build-dependencies | patch |
| [cynic-introspection](https://cynic-rs.dev)
([source](https://togithub.com/obmarg/cynic)) | `3.7.2` -> `3.7.3` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/cynic-introspection/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/cynic-introspection/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/cynic-introspection/3.7.2/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/cynic-introspection/3.7.2/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | patch |
| [cynic-parser](https://docs.rs/cynic-parser)
([source](https://togithub.com/obmarg/cynic)) | `0.4.3` -> `0.4.4` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/cynic-parser/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/cynic-parser/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/cynic-parser/0.4.3/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/cynic-parser/0.4.3/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [cynic-parser](https://docs.rs/cynic-parser)
([source](https://togithub.com/obmarg/cynic)) | `0.4.3` -> `0.4.4` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/cynic-parser/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/cynic-parser/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/cynic-parser/0.4.3/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/cynic-parser/0.4.3/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | patch |
|
[eslint-config-next](https://nextjs.org/docs/app/building-your-application/configuring/eslint#eslint-config)
([source](https://togithub.com/vercel/next.js/tree/HEAD/packages/eslint-config-next))
| [`14.2.3` ->
`14.2.4`](https://renovatebot.com/diffs/npm/eslint-config-next/14.2.3/14.2.4)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-config-next/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-config-next/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-config-next/14.2.3/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-config-next/14.2.3/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
|
[futures-concurrency](https://togithub.com/yoshuawuyts/futures-concurrency)
| `7.6.0` -> `7.6.1` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/futures-concurrency/7.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/futures-concurrency/7.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/futures-concurrency/7.6.0/7.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/futures-concurrency/7.6.0/7.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [graphql](https://togithub.com/graphql/graphql-js) | [`16.8.1` ->
`16.8.2`](https://renovatebot.com/diffs/npm/graphql/16.8.1/16.8.2) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/graphql/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/graphql/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/graphql/16.8.1/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/graphql/16.8.1/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [graphql](https://togithub.com/graphql/graphql-js) | [`16.8.1` ->
`16.8.2`](https://renovatebot.com/diffs/npm/graphql/16.8.1/16.8.2) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/graphql/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/graphql/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/graphql/16.8.1/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/graphql/16.8.1/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [hyper-util](https://hyper.rs)
([source](https://togithub.com/hyperium/hyper-util)) | `0.1.4` ->
`0.1.5` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/hyper-util/0.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/hyper-util/0.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/hyper-util/0.1.4/0.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/hyper-util/0.1.4/0.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | patch |
| [lambda_http](https://togithub.com/awslabs/aws-lambda-rust-runtime) |
`0.11.1` -> `0.11.4` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/lambda_http/0.11.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/lambda_http/0.11.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/lambda_http/0.11.1/0.11.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/lambda_http/0.11.1/0.11.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [next](https://nextjs.org)
([source](https://togithub.com/vercel/next.js)) | [`14.2.3` ->
`14.2.4`](https://renovatebot.com/diffs/npm/next/14.2.3/14.2.4) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/next/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/next/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/next/14.2.3/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/next/14.2.3/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [openidconnect](https://togithub.com/ramosbugs/openidconnect-rs) |
`4.0.0-alpha.1` -> `4.0.0-alpha.2` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/openidconnect/4.0.0-alpha.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/openidconnect/4.0.0-alpha.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/openidconnect/4.0.0-alpha.1/4.0.0-alpha.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/openidconnect/4.0.0-alpha.1/4.0.0-alpha.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | patch |
|
[opentelemetry](https://togithub.com/open-telemetry/opentelemetry-rust)
| `0.22` -> `0.23` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/opentelemetry/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/opentelemetry/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/opentelemetry/0.22.0/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/opentelemetry/0.22.0/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
|
[opentelemetry-otlp](https://togithub.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-otlp)
([source](https://togithub.com/open-telemetry/opentelemetry-rust/tree/HEAD/opentelemetry-otlp))
| `0.15` -> `0.16` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/opentelemetry-otlp/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/opentelemetry-otlp/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/opentelemetry-otlp/0.15.0/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/opentelemetry-otlp/0.15.0/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
|
[opentelemetry-stdout](https://togithub.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-stdout)
([source](https://togithub.com/open-telemetry/opentelemetry-rust/tree/HEAD/opentelemetry-stdout))
| `0.3` -> `0.4` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/opentelemetry-stdout/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/opentelemetry-stdout/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/opentelemetry-stdout/0.3.0/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/opentelemetry-stdout/0.3.0/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
|
[opentelemetry_sdk](https://togithub.com/open-telemetry/opentelemetry-rust)
| `0.22.0` -> `0.23.0` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/opentelemetry_sdk/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/opentelemetry_sdk/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/opentelemetry_sdk/0.22.1/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/opentelemetry_sdk/0.22.1/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [proc-macro2](https://togithub.com/dtolnay/proc-macro2) | `1.0.84` ->
`1.0.85` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/proc-macro2/1.0.85?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/proc-macro2/1.0.85?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/proc-macro2/1.0.84/1.0.85?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/proc-macro2/1.0.84/1.0.85?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [regex](https://togithub.com/rust-lang/regex) | `1.10.4` -> `1.10.5` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/regex/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/regex/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/regex/1.10.4/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/regex/1.10.4/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dev-dependencies | patch |
| [regex](https://togithub.com/rust-lang/regex) | `1.10.4` -> `1.10.5` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/regex/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/regex/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/regex/1.10.4/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/regex/1.10.4/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | patch |
| [rustls](https://togithub.com/rustls/rustls) | `0.23.8` -> `0.23.10` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/rustls/0.23.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/rustls/0.23.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/rustls/0.23.8/0.23.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/rustls/0.23.8/0.23.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | patch |
| [strum_macros](https://togithub.com/Peternator7/strum) | `0.26.2` ->
`0.26.4` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/strum_macros/0.26.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/strum_macros/0.26.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/strum_macros/0.26.2/0.26.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/strum_macros/0.26.2/0.26.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | patch |
| [swc_common](https://togithub.com/swc-project/swc) | `0.33.26` ->
`0.34.0` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/swc_common/0.34.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/swc_common/0.34.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/swc_common/0.33.26/0.34.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/swc_common/0.33.26/0.34.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [swc_ecma_ast](https://togithub.com/swc-project/swc) | `0.113.1` ->
`0.115.0` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/swc_ecma_ast/0.115.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/swc_ecma_ast/0.115.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/swc_ecma_ast/0.113.4/0.115.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/swc_ecma_ast/0.113.4/0.115.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [swc_ecma_parser](https://togithub.com/swc-project/swc) | `0.144.1` ->
`0.146.0` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/swc_ecma_parser/0.146.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/swc_ecma_parser/0.146.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/swc_ecma_parser/0.144.1/0.146.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/swc_ecma_parser/0.144.1/0.146.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [tar](https://togithub.com/alexcrichton/tar-rs) | `0.4.40` -> `0.4.41`
|
[![age](https://developer.mend.io/api/mc/badges/age/crate/tar/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/tar/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/tar/0.4.40/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/tar/0.4.40/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [tar](https://togithub.com/alexcrichton/tar-rs) | `0.4.40` -> `0.4.41`
|
[![age](https://developer.mend.io/api/mc/badges/age/crate/tar/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/tar/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/tar/0.4.40/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/tar/0.4.40/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | patch |
| [tokio](https://tokio.rs)
([source](https://togithub.com/tokio-rs/tokio)) | `1.37.0` -> `1.38.0` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/tokio/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/tokio/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/tokio/1.37.0/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/tokio/1.37.0/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dev-dependencies | minor |
| [tokio](https://tokio.rs)
([source](https://togithub.com/tokio-rs/tokio)) | `1.37.0` -> `1.38.0` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/tokio/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/tokio/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/tokio/1.37.0/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/tokio/1.37.0/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [tokio](https://tokio.rs)
([source](https://togithub.com/tokio-rs/tokio)) | `1.37.0` -> `1.38.0` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/tokio/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/tokio/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/tokio/1.37.0/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/tokio/1.37.0/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | minor |
| [toml](https://togithub.com/toml-rs/toml) | `0.8.13` -> `0.8.14` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/toml/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/toml/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/toml/0.8.13/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/toml/0.8.13/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [toml](https://togithub.com/toml-rs/toml) | `0.8.13` -> `0.8.14` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/toml/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/toml/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/toml/0.8.13/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/toml/0.8.13/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dev-dependencies | patch |
|
[tracing-opentelemetry](https://togithub.com/tokio-rs/tracing-opentelemetry)
| `0.23` -> `0.24` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/tracing-opentelemetry/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/tracing-opentelemetry/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/tracing-opentelemetry/0.23.0/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/tracing-opentelemetry/0.23.0/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [type-fest](https://togithub.com/sindresorhus/type-fest) | [`4.20.0`
-> `4.20.1`](https://renovatebot.com/diffs/npm/type-fest/4.20.0/4.20.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/type-fest/4.20.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/type-fest/4.20.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/type-fest/4.20.0/4.20.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/type-fest/4.20.0/4.20.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [url](https://togithub.com/servo/rust-url) | `2.5.0` -> `2.5.1` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/url/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/url/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/url/2.5.0/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/url/2.5.0/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [url](https://togithub.com/servo/rust-url) | `2.5.0` -> `2.5.1` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/url/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/url/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/url/2.5.0/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/url/2.5.0/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dev-dependencies | patch |
| [url](https://togithub.com/servo/rust-url) | `2.5.0` -> `2.5.1` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/url/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/url/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/url/2.5.0/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/url/2.5.0/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | patch |
| [vite](https://vitejs.dev)
([source](https://togithub.com/vitejs/vite/tree/HEAD/packages/vite)) |
[`5.2.13` ->
`5.3.1`](https://renovatebot.com/diffs/npm/vite/5.2.13/5.3.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vite/5.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite/5.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite/5.2.13/5.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/5.2.13/5.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [zip](https://togithub.com/zip-rs/zip2) | `2.1.0` -> `2.1.3` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/zip/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/zip/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/zip/2.1.0/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/zip/2.1.0/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |

---

### Release Notes

<details>
<summary>apollographql/apollo-client (@&#8203;apollo/client)</summary>

###
[`v3.10.5`](https://togithub.com/apollographql/apollo-client/blob/HEAD/CHANGELOG.md#3105)

[Compare
Source](https://togithub.com/apollographql/apollo-client/compare/v3.10.4...v3.10.5)

##### Patch Changes

-
[#&#8203;11888](https://togithub.com/apollographql/apollo-client/pull/11888)
[`7fb7939`](https://togithub.com/apollographql/apollo-client/commit/7fb7939edb7ca8f4273b75554f96ea9936731458)
Thanks [@&#8203;phryneas](https://togithub.com/phryneas)! - switch
`useRenderGuard` to an approach not accessing React's internals

-
[#&#8203;11511](https://togithub.com/apollographql/apollo-client/pull/11511)
[`6536369`](https://togithub.com/apollographql/apollo-client/commit/6536369cf213469d20d15b779c344268d70fecd5)
Thanks [@&#8203;phryneas](https://togithub.com/phryneas)! -
`useLoadableQuery`: ensure that `loadQuery` is updated if the
ApolloClient instance changes

-
[#&#8203;11860](https://togithub.com/apollographql/apollo-client/pull/11860)
[`8740f19`](https://togithub.com/apollographql/apollo-client/commit/8740f198805a99e01136617c4055d611b92cc231)
Thanks [@&#8203;alessbell](https://togithub.com/alessbell)! - Fixes
[#&#8203;11849](https://togithub.com/apollographql/apollo-client/issues/11849)
by reevaluating `window.fetch` each time `BatchHttpLink` uses it, if not
configured via `options.fetch`. Takes the same approach as PR
[#&#8203;8603](https://togithub.com/apollographql/apollo-client/pull/8603)
which fixed the same issue in `HttpLink`.

-
[#&#8203;11852](https://togithub.com/apollographql/apollo-client/pull/11852)
[`d502a69`](https://togithub.com/apollographql/apollo-client/commit/d502a69654d8ffa31e09467da028304a934a9874)
Thanks [@&#8203;phryneas](https://togithub.com/phryneas)! - Fix a bug
where calling the `useMutation` `reset` function would point the hook to
an outdated `client` reference.

-
[#&#8203;11329](https://togithub.com/apollographql/apollo-client/pull/11329)
[`3d164ea`](https://togithub.com/apollographql/apollo-client/commit/3d164ea16c17d271f6fa9e5ad8f013623eec23a0)
Thanks [@&#8203;PaLy](https://togithub.com/PaLy)! - Fix graphQLErrors in
Error Link if networkError.result is an empty string

-
[#&#8203;11852](https://togithub.com/apollographql/apollo-client/pull/11852)
[`d502a69`](https://togithub.com/apollographql/apollo-client/commit/d502a69654d8ffa31e09467da028304a934a9874)
Thanks [@&#8203;phryneas](https://togithub.com/phryneas)! - Prevent
writing to a ref in render in `useMutation`.
As a result, you might encounter problems in the future if you call the
mutation's `execute` function during render. Please note that this was
never supported behavior, and we strongly recommend against it.

-
[#&#8203;11848](https://togithub.com/apollographql/apollo-client/pull/11848)
[`ad63924`](https://togithub.com/apollographql/apollo-client/commit/ad6392424ddbeb6f91b165c806251490e1cdd69e)
Thanks [@&#8203;phryneas](https://togithub.com/phryneas)! - Ensure
covariant behavior: `MockedResponse<X,Y>` should be assignable to
`MockedResponse`

-
[#&#8203;11851](https://togithub.com/apollographql/apollo-client/pull/11851)
[`45c47be`](https://togithub.com/apollographql/apollo-client/commit/45c47be26d4e020cfcff359a5af19ccfc39b930e)
Thanks [@&#8203;phryneas](https://togithub.com/phryneas)! - Avoid usage
of useRef in useInternalState to prevent ref access in render.

-
[#&#8203;11877](https://togithub.com/apollographql/apollo-client/pull/11877)
[`634d91a`](https://togithub.com/apollographql/apollo-client/commit/634d91aeb10ab308b05d5ffb918678806046af09)
Thanks [@&#8203;phryneas](https://togithub.com/phryneas)! - Add missing
name to tuple member (fix TS5084)

-
[#&#8203;11851](https://togithub.com/apollographql/apollo-client/pull/11851)
[`45c47be`](https://togithub.com/apollographql/apollo-client/commit/45c47be26d4e020cfcff359a5af19ccfc39b930e)
Thanks [@&#8203;phryneas](https://togithub.com/phryneas)! - Fix a bug
where `useLazyQuery` would not pick up a client change.

</details>

<details>
<summary>Nullus157/async-compression (async-compression)</summary>

###
[`v0.4.11`](https://togithub.com/Nullus157/async-compression/blob/HEAD/CHANGELOG.md#0411---2024-05-30)

[Compare
Source](https://togithub.com/Nullus157/async-compression/compare/v0.4.10...v0.4.11)

##### Other

-   Expose total_in/total_out from underlying flate2 encoder types.

</details>

<details>
<summary>async-graphql/async-graphql (async-graphql)</summary>

###
[`v7.0.6`](https://togithub.com/async-graphql/async-graphql/blob/HEAD/CHANGELOG.md#706-2024-06-08)

- add license files to each project
[#&#8203;1523](https://togithub.com/async-graphql/async-graphql/issues/1523)
- Improve alignment of directive behavior with GraphQL spec
[#&#8203;1524](https://togithub.com/async-graphql/async-graphql/pull/1524)
- dynamic schema: pass default vals to ResolverContext
[#&#8203;1527](https://togithub.com/async-graphql/async-graphql/pull/1527)
- Add [altair](https://togithub.com/altair-graphql/altair) source
[#&#8203;1530](https://togithub.com/async-graphql/async-graphql/pull/1530)
- feat: Add support for using `Interface` and `OneofObject` on the same
struct
[#&#8203;1534](https://togithub.com/async-graphql/async-graphql/pull/1534)

</details>

<details>
<summary>smol-rs/async-lock (async-lock)</summary>

###
[`v3.4.0`](https://togithub.com/smol-rs/async-lock/blob/HEAD/CHANGELOG.md#Version-340)

[Compare
Source](https://togithub.com/smol-rs/async-lock/compare/v3.3.0...v3.4.0)

- Port to `event-listener` v5.0.0.
([#&#8203;74](https://togithub.com/smol-rs/async-lock/issues/74))

</details>

<details>
<summary>sdroege/async-tungstenite (async-tungstenite)</summary>

###
[`v0.26.1`](https://togithub.com/sdroege/async-tungstenite/blob/HEAD/CHANGELOG.md#0261---2024-06-06)

[Compare
Source](https://togithub.com/sdroege/async-tungstenite/compare/0.26.0...0.26.1)

##### Added

- New `url` feature that maps to the corresponding feature from
`tungstenite`
    and allows connecting directly to `ws` / `wss` URLs.

</details>

<details>
<summary>rust-lang/backtrace-rs (backtrace)</summary>

###
[`v0.3.73`](https://togithub.com/rust-lang/backtrace-rs/releases/tag/0.3.73)

[Compare
Source](https://togithub.com/rust-lang/backtrace-rs/compare/0.3.72...0.3.73)

This basically just is bugfixes so that backtrace works on Windows 7
again.

#### What's Changed

- Fix signature of resolve_legacy for Windows 7 target by
[@&#8203;aapanfilovv](https://togithub.com/aapanfilovv) in
[https://github.com/rust-lang/backtrace-rs/pull/631](https://togithub.com/rust-lang/backtrace-rs/pull/631)
- Update some comments by
[@&#8203;ChrisDenton](https://togithub.com/ChrisDenton) in
[https://github.com/rust-lang/backtrace-rs/pull/630](https://togithub.com/rust-lang/backtrace-rs/pull/630)
- Update object to 0.36.0. by
[@&#8203;afranchuk](https://togithub.com/afranchuk) in
[https://github.com/rust-lang/backtrace-rs/pull/633](https://togithub.com/rust-lang/backtrace-rs/pull/633)

#### New Contributors

- [@&#8203;aapanfilovv](https://togithub.com/aapanfilovv) made their
first contribution in
[https://github.com/rust-lang/backtrace-rs/pull/631](https://togithub.com/rust-lang/backtrace-rs/pull/631)
- [@&#8203;afranchuk](https://togithub.com/afranchuk) made their first
contribution in
[https://github.com/rust-lang/backtrace-rs/pull/633](https://togithub.com/rust-lang/backtrace-rs/pull/633)

**Full Changelog**:
https://github.com/rust-lang/backtrace-rs/compare/0.3.72...0.3.73

###
[`v0.3.72`](https://togithub.com/rust-lang/backtrace-rs/releases/tag/0.3.72)

[Compare
Source](https://togithub.com/rust-lang/backtrace-rs/compare/0.3.71...0.3.72)

This release removes a lot of dead code. Some feature flags that haven't
done anything in a long time are gone. If you depend on those features,
Cargo's resolver will not update you to 0.3.72.

If your code runs on Windows, or you want it to run on visionOS,
however, you should probably update to this version. It contains a
number of fixes for both OS. It also uses the latest version of a number
of dependencies.

#### What's Changed

- Revert "Use rustc from stage0 instead of stage0-sysroot (rust-lang/ba…
by [@&#8203;Nilstrieb](https://togithub.com/Nilstrieb) in
[https://github.com/rust-lang/backtrace-rs/pull/603](https://togithub.com/rust-lang/backtrace-rs/pull/603)
- Remove dead code by
[@&#8203;ChrisDenton](https://togithub.com/ChrisDenton) in
[https://github.com/rust-lang/backtrace-rs/pull/605](https://togithub.com/rust-lang/backtrace-rs/pull/605)
- Fix CI and remove rustc-serialize by
[@&#8203;ChrisDenton](https://togithub.com/ChrisDenton) in
[https://github.com/rust-lang/backtrace-rs/pull/596](https://togithub.com/rust-lang/backtrace-rs/pull/596)
- Use correct base address and update comment by
[@&#8203;ChrisDenton](https://togithub.com/ChrisDenton) in
[https://github.com/rust-lang/backtrace-rs/pull/604](https://togithub.com/rust-lang/backtrace-rs/pull/604)
- Windows AArch64: Break out of tracing when no longer making progress
by [@&#8203;dpaoliello](https://togithub.com/dpaoliello) in
[https://github.com/rust-lang/backtrace-rs/pull/610](https://togithub.com/rust-lang/backtrace-rs/pull/610)
- Remove obsolete rustc-serialize references by
[@&#8203;atouchet](https://togithub.com/atouchet) in
[https://github.com/rust-lang/backtrace-rs/pull/614](https://togithub.com/rust-lang/backtrace-rs/pull/614)
- Update `object` and `addr2line` dependencies by
[@&#8203;a1phyr](https://togithub.com/a1phyr) in
[https://github.com/rust-lang/backtrace-rs/pull/612](https://togithub.com/rust-lang/backtrace-rs/pull/612)
- Fix tests for rust 1.79 by
[@&#8203;workingjubilee](https://togithub.com/workingjubilee) in
[https://github.com/rust-lang/backtrace-rs/pull/621](https://togithub.com/rust-lang/backtrace-rs/pull/621)
- Remove unused `libbacktrace` and `gimli-symbolize` features by
[@&#8203;Enselic](https://togithub.com/Enselic) in
[https://github.com/rust-lang/backtrace-rs/pull/615](https://togithub.com/rust-lang/backtrace-rs/pull/615)
- remove some instances of dead_code by
[@&#8203;klensy](https://togithub.com/klensy) in
[https://github.com/rust-lang/backtrace-rs/pull/619](https://togithub.com/rust-lang/backtrace-rs/pull/619)
- Reduce panics in dbghelp by
[@&#8203;ChrisDenton](https://togithub.com/ChrisDenton) in
[https://github.com/rust-lang/backtrace-rs/pull/608](https://togithub.com/rust-lang/backtrace-rs/pull/608)
- Add Apple visionOS support by
[@&#8203;QuentinPerez](https://togithub.com/QuentinPerez) in
[https://github.com/rust-lang/backtrace-rs/pull/613](https://togithub.com/rust-lang/backtrace-rs/pull/613)
- Update cc crate to v1.0.97 by
[@&#8203;jfgoog](https://togithub.com/jfgoog) in
[https://github.com/rust-lang/backtrace-rs/pull/623](https://togithub.com/rust-lang/backtrace-rs/pull/623)
- chore: add docs for the global re-entrant lock by
[@&#8203;Gankra](https://togithub.com/Gankra) in
[https://github.com/rust-lang/backtrace-rs/pull/609](https://togithub.com/rust-lang/backtrace-rs/pull/609)
- Test with lld-compatible args by
[@&#8203;workingjubilee](https://togithub.com/workingjubilee) in
[https://github.com/rust-lang/backtrace-rs/pull/627](https://togithub.com/rust-lang/backtrace-rs/pull/627)
- Bump rustc-demangle version by
[@&#8203;michaelwoerister](https://togithub.com/michaelwoerister) in
[https://github.com/rust-lang/backtrace-rs/pull/624](https://togithub.com/rust-lang/backtrace-rs/pull/624)
- cleanup dead_code around cpp_demangle feature by
[@&#8203;klensy](https://togithub.com/klensy) in
[https://github.com/rust-lang/backtrace-rs/pull/622](https://togithub.com/rust-lang/backtrace-rs/pull/622)
- Cut backtrace 0.3.72 by
[@&#8203;workingjubilee](https://togithub.com/workingjubilee) in
[https://github.com/rust-lang/backtrace-rs/pull/628](https://togithub.com/rust-lang/backtrace-rs/pull/628)

#### New Contributors

- [@&#8203;Enselic](https://togithub.com/Enselic) made their first
contribution in
[https://github.com/rust-lang/backtrace-rs/pull/615](https://togithub.com/rust-lang/backtrace-rs/pull/615)
- [@&#8203;QuentinPerez](https://togithub.com/QuentinPerez) made their
first contribution in
[https://github.com/rust-lang/backtrace-rs/pull/613](https://togithub.com/rust-lang/backtrace-rs/pull/613)
- [@&#8203;Gankra](https://togithub.com/Gankra) made their first
contribution in
[https://github.com/rust-lang/backtrace-rs/pull/609](https://togithub.com/rust-lang/backtrace-rs/pull/609)

**Full Changelog**:
https://github.com/rust-lang/backtrace-rs/compare/0.3.71...0.3.72

</details>

<details>
<summary>oven-sh/bun (bun)</summary>

###
[`v1.1.13`](https://togithub.com/oven-sh/bun/releases/tag/bun-v1.1.13):
Bun v1.1.13

[Compare
Source](https://togithub.com/oven-sh/bun/compare/bun-v1.1.12...bun-v1.1.13)

To install Bun v1.1.13:

```bash
curl -fsSL https://bun.sh/install | bash

### or you can use npm
### npm install -g bun
```

Windows:

```bash
powershell -c "irm bun.sh/install.ps1|iex"
```

To upgrade to Bun v1.1.13:

```bash
bun upgrade
```

##### **[Read Bun v1.1.13's release notes on Bun's
blog](https://bun.sh/blog/bun-v1.1.13)**

##### Thanks to 11 contributors!

-   [@&#8203;cirospaciari](https://togithub.com/cirospaciari)
-   [@&#8203;deiga](https://togithub.com/deiga)
-   [@&#8203;dylan-conway](https://togithub.com/dylan-conway)
-   [@&#8203;Jarred-Sumner](https://togithub.com/Jarred-Sumner)
-   [@&#8203;LudvigHz](https://togithub.com/LudvigHz)
-   [@&#8203;MARCROCK22](https://togithub.com/MARCROCK22)
-   [@&#8203;nacmartin](https://togithub.com/nacmartin)
-   [@&#8203;nektro](https://togithub.com/nektro)
-   [@&#8203;nithinkjoy-tech](https://togithub.com/nithinkjoy-tech)
-   [@&#8203;paperdave](https://togithub.com/paperdave)
-   [@&#8203;Sushants-Git](https://togithub.com/Sushants-Git)
-   [@&#8203;zackradisic](https://togithub.com/zackradisic)

</details>

<details>
<summary>clap-rs/clap (clap)</summary>

###
[`v4.5.7`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#457---2024-06-10)

[Compare
Source](https://togithub.com/clap-rs/clap/compare/v4.5.6...v4.5.7)

##### Fixes

-   Clean up error message when too few arguments for `num_args`

###
[`v4.5.6`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#456---2024-06-06)

[Compare
Source](https://togithub.com/clap-rs/clap/compare/v4.5.5...v4.5.6)

###
[`v4.5.5`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#455---2024-06-06)

[Compare
Source](https://togithub.com/clap-rs/clap/compare/v4.5.4...v4.5.5)

##### Fixes

- Allow `exclusive` to override `required_unless_present`,
`required_unless_present_any`, `required_unless_present_all`

</details>

<details>
<summary>obmarg/cynic (cynic)</summary>

###
[`v3.7.3`](https://togithub.com/obmarg/cynic/blob/HEAD/CHANGELOG.md#v373---2024-06-04)

[Compare
Source](https://togithub.com/obmarg/cynic/compare/v3.7.2...v3.7.3)

##### Changes

-   update Cargo.toml dependencies
- update rust crate trycmd to 0.15
([#&#8203;971](https://togithub.com/obmarg/cynic/pull/971))

</details>

<details>
<summary>vercel/next.js (eslint-config-next)</summary>

###
[`v14.2.4`](https://togithub.com/vercel/next.js/releases/tag/v14.2.4)

[Compare
Source](https://togithub.com/vercel/next.js/compare/v14.2.3...v14.2.4)

> \[!NOTE]\
> This release is backporting bug fixes. It does **not** include all
pending features/changes on canary.

##### Core Changes

- fix: ensure route handlers properly track dynamic access
([#&#8203;66446](https://togithub.com/vercel/next.js/issues/66446))
- fix NextRequest proxy in edge runtime
([#&#8203;66551](https://togithub.com/vercel/next.js/issues/66551))
- Fix next/dynamic with babel and src dir
([#&#8203;65177](https://togithub.com/vercel/next.js/issues/65177))
- Use vercel deployment url for metadataBase fallbacks
([#&#8203;65089](https://togithub.com/vercel/next.js/issues/65089))
- fix(next/image): detect react@19 for fetchPriority prop
([#&#8203;65235](https://togithub.com/vercel/next.js/issues/65235))
- Fix loading navigation with metadata and prefetch
([#&#8203;66447](https://togithub.com/vercel/next.js/issues/66447))
- prevent duplicate RSC fetch when action redirects
([#&#8203;66620](https://togithub.com/vercel/next.js/issues/66620))
- ensure router cache updates reference the latest cache values
([#&#8203;66681](https://togithub.com/vercel/next.js/issues/66681))
- Prevent append of trailing slash in cases where path ends with a file
extension
([#&#8203;66636](https://togithub.com/vercel/next.js/issues/66636))
- Fix inconsistency with 404 getStaticProps cache-control
([#&#8203;66674](https://togithub.com/vercel/next.js/issues/66674))
- Use addDependency to track metadata route file changes
([#&#8203;66714](https://togithub.com/vercel/next.js/issues/66714))
- Add timeout/retry handling for fetch cache
([#&#8203;66652](https://togithub.com/vercel/next.js/issues/66652))
- fix: app-router prefetch crash when an invalid URL is passed to Link
([#&#8203;66755](https://togithub.com/vercel/next.js/issues/66755))

##### Credits

Huge thanks to [@&#8203;ztanner](https://togithub.com/ztanner),
[@&#8203;ijjk](https://togithub.com/ijjk),
[@&#8203;wbinnssmith](https://togithub.com/wbinnssmith),
[@&#8203;huozhi](https://togithub.com/huozhi), and
[@&#8203;lubieowoce](https://togithub.com/lubieowoce) for helping!

</details>

<details>
<summary>yoshuawuyts/futures-concurrency (futures-concurrency)</summary>

###
[`v7.6.1`](https://togithub.com/yoshuawuyts/futures-concurrency/releases/tag/v7.6.1)

[Compare
Source](https://togithub.com/yoshuawuyts/futures-concurrency/compare/v7.6.0...v7.6.1)

#### What's Changed

- Add checks for msrv and semver by
[@&#8203;matheus-consoli](https://togithub.com/matheus-consoli) in
[https://github.com/yoshuawuyts/futures-concurrency/pull/181](https://togithub.com/yoshuawuyts/futures-concurrency/pull/181)
- Fix markdown punctuation in documentation of ConcurrentStream::take by
[@&#8203;dtolnay](https://togithub.com/dtolnay) in
[https://github.com/yoshuawuyts/futures-concurrency/pull/186](https://togithub.com/yoshuawuyts/futures-concurrency/pull/186)
- Fix pin violation in much of concurrentstream by
[@&#8203;conradludgate](https://togithub.com/conradludgate) in
[https://github.com/yoshuawuyts/futures-concurrency/pull/187](https://togithub.com/yoshuawuyts/futures-concurrency/pull/187)
- Add new benchmark for `FutureGroup` by
[@&#8203;soooch](https://togithub.com/soooch) in
[https://github.com/yoshuawuyts/futures-concurrency/pull/179](https://togithub.com/yoshuawuyts/futures-concurrency/pull/179)

#### New Contributors

- [@&#8203;dtolnay](https://togithub.com/dtolnay) made their first
contribution in
[https://github.com/yoshuawuyts/futures-concurrency/pull/186](https://togithub.com/yoshuawuyts/futures-concurrency/pull/186)
- [@&#8203;conradludgate](https://togithub.com/conradludgate) made their
first contribution in
[https://github.com/yoshuawuyts/futures-concurrency/pull/187](https://togithub.com/yoshuawuyts/futures-concurrency/pull/187)
- [@&#8203;soooch](https://togithub.com/soooch) made their first
contribution in
[https://github.com/yoshuawuyts/futures-concurrency/pull/179](https://togithub.com/yoshuawuyts/futures-concurrency/pull/179)

**Full Changelog**:
https://github.com/yoshuawuyts/futures-concurrency/compare/v7.6.0...v7.6.1

</details>

<details>
<summary>graphql/graphql-js (graphql)</summary>

###
[`v16.8.2`](https://togithub.com/graphql/graphql-js/releases/tag/v16.8.2)

[Compare Source](https://togithub.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/grafbase/grafbase).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zOTMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjM5My4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants